package com.example.bookmall.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.bookmall.entity.Book;
import com.example.bookmall.entity.Result;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

public interface BookService {
    //添加图书
    Result addBook(Book book);

    //下架图书
    boolean publishBook(Integer bookId);

    //下架图书
    boolean unpublishBook(Integer bookId);

    //修改图书
    Result modifyBook(Integer bookId, Book book);

    //删除图书
    boolean deleteBook(Integer bookId);


    //查询所有图书 用户查询图书 只能查询到上架的图书
    Page<Book> searchBooks(String keyword, Integer pageNum, Integer pageSize);

    //按分类查询图书
    List<Book> getBooksByCategory(Integer categoryId);

    //查询图书详情 用户查询图书详情
    Book getBookDetails(Integer bookId);

    //判断图书是否存在
    boolean existsById(Integer bookId);


    //查询所有图书
    Object listBooks(Integer page, Integer pageSize);

    //根据id查询图书
    Book getById(Integer bookId);

    //根据title查询图书
    Object searchByTitle(String title, int i, int i1);

    //根据作者查询图书
    Object searchByAuthor(String author, Integer page, Integer pageSize);

    //根据isbn查询图书
    Object searchByIsbn(String isbn, Integer page, Integer pageSize);

    //增加库存 将取消订单的订单的图书数量加回库存
    void increaseStock(Integer bookId, Integer quantity);

    //获取最新图书
    List<Book> getNewBooks(Integer count);

    //获取推荐图书
    List<Book> getRecommendBooks(Integer count);

    //获取轮播图图书
    List<Book> getBannerdBooks(Integer count);

    //减少库存
    void decreaseStock(Integer bookId, Integer quantity);
}